home *** CD-ROM | disk | FTP | other *** search
- VERSION 5.00
- Begin VB.Form frmMain
- BorderStyle = 1 'Fixed Single
- Caption = "DirectMusic"
- ClientHeight = 2955
- ClientLeft = 45
- ClientTop = 330
- ClientWidth = 4680
- LinkTopic = "Form1"
- MaxButton = 0 'False
- ScaleHeight = 2955
- ScaleWidth = 4680
- StartUpPosition = 2 'CenterScreen
- Begin VB.FileListBox File1
- Height = 1650
- Left = 2340
- Pattern = "*.mid"
- TabIndex = 8
- Top = 1140
- Width = 2175
- End
- Begin VB.DirListBox Dir1
- Height = 1665
- Left = 180
- TabIndex = 7
- Top = 1140
- Width = 2055
- End
- Begin VB.HScrollBar hsbVolume
- Height = 180
- LargeChange = 25
- Left = 2040
- Max = 10000
- Min = -10000
- TabIndex = 6
- Top = 540
- Width = 1035
- End
- Begin VB.CommandButton cmdStop
- Caption = "Stop"
- Height = 495
- Left = 3960
- TabIndex = 5
- Top = 60
- Width = 555
- End
- Begin VB.Timer Timer2
- Enabled = 0 'False
- Interval = 1
- Left = 0
- Top = 1200
- End
- Begin VB.PictureBox pcbProgress
- BackColor = &H00FFFFFF&
- Height = 135
- Left = 240
- ScaleHeight = 5
- ScaleMode = 0 'User
- ScaleWidth = 281
- TabIndex = 4
- Top = 840
- Width = 4275
- End
- Begin VB.Timer Timer1
- Enabled = 0 'False
- Interval = 1000
- Left = 420
- Top = 1200
- End
- Begin VB.CommandButton cmdPlay
- Caption = "Play"
- Height = 495
- Left = 3360
- TabIndex = 0
- Top = 60
- Width = 615
- End
- Begin VB.Label lbl
- AutoSize = -1 'True
- BackStyle = 0 'Transparent
- Caption = "Volume : 0"
- Height = 195
- Index = 2
- Left = 300
- TabIndex = 3
- Top = 540
- Width = 750
- End
- Begin VB.Label lbl
- AutoSize = -1 'True
- BackStyle = 0 'Transparent
- Caption = "0 in second : 0"
- Height = 195
- Index = 1
- Left = 300
- TabIndex = 2
- Top = 300
- Width = 1050
- End
- Begin VB.Label lbl
- AutoSize = -1 'True
- BackStyle = 0 'Transparent
- Caption = "Time : 0"
- Height = 195
- Index = 0
- Left = 300
- TabIndex = 1
- Top = 60
- Width = 570
- End
- Attribute VB_Name = "frmMain"
- Attribute VB_GlobalNameSpace = False
- Attribute VB_Creatable = False
- Attribute VB_PredeclaredId = True
- Attribute VB_Exposed = False
- Option Explicit
- Dim v_dx As New DirectX7
- Dim v_dmp As DirectMusicPerformance
- Dim v_dml As DirectMusicLoader
- Dim v_dms As DirectMusicSegment
- Dim v_dmss As DirectMusicSegmentState
- Dim vs_filename As String
- Dim vl_second As Long
- Dim vl_volume As Long
- Sub ErrMess(eNumber, eDesc)
- Dim Msg As String
- Msg = "An error has been occured."
- Msg = Msg & Chr(13) & "(" & eNumber & ") - " & eDesc
- MsgBox Msg, vbCritical
- End
- End Sub
- Private Sub cmdPlay_Click()
- On Local Error GoTo ErrSub
- If vs_filename = "" Then Exit Sub
- Set v_dms = v_dml.LoadSegment(vs_filename)
- If StrConv(Right(vs_filename, 4), vbLowerCase) = ".mid" Then
- v_dms.SetStandardMidiFile
- End If
- Call v_dmp.SetMasterAutoDownload(True)
- Call v_dms.Download(v_dmp)
- Set v_dmss = v_dmp.PlaySegment(v_dms, 0, 0)
- lbl(0).Caption = "Time : " & v_dms.GetLength
- pcbProgress.ScaleWidth = v_dms.GetLength
- vl_second = 0
- Call v_dmp.SetMasterVolume(hsbVolume.Value)
- Timer1 = True
- Timer2 = True
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub cmdStop_Click()
- On Local Error GoTo ErrSub
- If v_dms Is Nothing Then Exit Sub
- Call v_dmp.Stop(v_dms, v_dmss, 0, 0)
- Call v_dms.Unload(v_dmp)
- vl_second = 0
- pcbProgress.Cls
- lbl(1).Caption = "0" & " in second : " & vl_second
- Timer1 = False
- Timer2 = False
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub Dir1_Change()
- On Local Error GoTo ErrSub
- File1.Path = Dir1.Path
- File1.Refresh
- Call v_dml.SetSearchDirectory(Dir1.Path)
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub File1_Click()
- vs_filename = File1.filename
- End Sub
- Private Sub Form_Load()
- On Local Error GoTo ErrSub
- Set v_dml = v_dx.DirectMusicLoaderCreate
- Set v_dmp = v_dx.DirectMusicPerformanceCreate
- Call v_dmp.Init(Nothing, hWnd)
- Call v_dmp.SetPort(-1, 1)
- pcbProgress.ScaleHeight = 10
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- If v_dms Is Nothing Then GoTo OffTimers
- Call v_dmp.Stop(v_dms, v_dmss, 0, 0)
- Call v_dms.Unload(v_dmp)
- OffTimers:
- Timer1 = False
- Timer2 = False
- End Sub
- Private Sub hsbVolume_Change()
- On Local Error GoTo ErrSub
- Call v_dmp.SetMasterVolume(hsbVolume.Value)
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub hsbVolume_Scroll()
- On Local Error GoTo ErrSub
- Call v_dmp.SetMasterVolume(hsbVolume.Value)
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub Timer1_Timer()
- On Local Error GoTo ErrSub
- vl_second = vl_second + 1
- lbl(1).Caption = v_dmss.GetSeek & " in second : " & vl_second
- lbl(2).Caption = "Volume : " & v_dmp.GetMasterVolume
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
- Private Sub Timer2_Timer()
- On Local Error GoTo ErrSub
- pcbProgress.Line (0, 0)-(v_dmss.GetSeek, 10), vbBlue, BF
- lbl(1).Caption = v_dmss.GetSeek & " in second : " & vl_second
- lbl(2).Caption = "Volume : " & v_dmp.GetMasterVolume
- Exit Sub
- ErrSub:
- Call ErrMess(Err.Number, Err.Description)
- End Sub
-